package com.zhongge.model.dao;

import com.zhongge.model.entity.Article;

import java.util.List;

/**
 * @InterfaceName ArticleDao
 * @Description TODO
 * @Author zhongge
 * @Version 1.0
 */
public interface ArticleDao {
    /**
     * 根据ID查询文章
     * @param id 文章ID
     * @return 文章对象
     */
    Article findById(Integer id);

    /**
     * 查询所有文章（分页）
     * @param page 页码
     * @param pageSize 每页数量
     * @return 文章列表
     */
    List<Article> findAll(int page, int pageSize);

    /**
     * 根据用户ID查询文章（分页）
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 文章列表
     */
    List<Article> findByUserId(Integer userId, int page, int pageSize);

    /**
     * 根据分类ID查询文章（分页）
     * @param categoryId 分类ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 文章列表
     */
    List<Article> findByCategoryId(Integer categoryId, int page, int pageSize);

    /**
     * 添加文章
     * @param article 文章对象
     * @return 受影响的行数
     */
    int insert(Article article);

    /**
     * 更新文章
     * @param article 文章对象
     * @return 受影响的行数
     */
    int update(Article article);

    /**
     * 删除文章
     * @param id 文章ID
     * @return 受影响的行数
     */
    int delete(Integer id);

    /**
     * 增加文章阅读量
     * @param id 文章ID
     */
    void increaseViewCount(Integer id);

    /**
     * 获取文章总数
     * @return 文章总数
     */
    int getTotalCount();

    /**
     * 根据用户ID获取文章总数
     * @param userId 用户ID
     * @return 文章总数
     */
    int getTotalCountByUserId(Integer userId);

    /**
     * 根据分类ID获取文章总数
     * @param categoryId 分类ID
     * @return 文章总数
     */
    int getTotalCountByCategoryId(Integer categoryId);
}
